home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / prog / re11.arj / REDEMO2.C < prev    next >
C/C++ Source or Header  |  1994-02-10  |  2KB  |  84 lines

  1. /* ************************************************************** */
  2. /* redemo2.c For Turbo C - Demonstrates how to display XGF images */
  3. /*                         from inside a resource file.           */
  4. /*                                                                */
  5. /* Use Raster Master and Raster Utilities to create XGF files.    */
  6. /*                                                                */
  7. /* ************************************************************** */
  8.  
  9. #include <stdio.h>
  10. #include <graphics.h>
  11.  
  12. struct resheadrec {
  13.     char         rfid[3];    /* resource file id - RES    */
  14.     unsigned int resitems;   /* number of resource items  */
  15.   };
  16.  
  17. struct resitemrec {
  18.     int  rt;         /* resource type */
  19.     char rid[12];    /* resource id   */
  20.     long offset;     /* file offset   */
  21.     long length;     /* file size     */
  22.   };
  23.  
  24. void setvga16()
  25. {
  26.  int driver = VGA,
  27.      mode = VGALO;
  28.  
  29.  initgraph(&driver, &mode, "");
  30. }
  31.  
  32. void res_dis_xgf(int x, int y, char *filename, int ri)
  33. {
  34.  FILE *F;
  35.  unsigned int width,height,bpl,i;
  36.  int scanline[1030];
  37.  struct resitemrec res;
  38.  
  39.  F=fopen(filename,"rb");
  40.  
  41.  if (F!=NULL)
  42.  {
  43.    fseek(F,((long)sizeof(struct resheadrec)+
  44.    (long)(ri-1)*(long)sizeof(struct resitemrec)),SEEK_SET);
  45.  
  46.    fread(&res,sizeof(res),1,F);             /* res item record  */
  47.  
  48.    fseek(F,res.offset,SEEK_SET);
  49.    fread(&width,2,1,F);
  50.    fread(&height,2,1,F);
  51.  
  52.    scanline[0]=width;
  53.    scanline[1]=0;
  54.  
  55.    bpl=imagesize(0,0,width,0)-6;
  56.  
  57.    for(i=0;i<height;i++)
  58.    {
  59.      fread(&scanline[2],1,bpl,F);
  60.      putimage(x,y+i,scanline,0);
  61.    }
  62.    fclose(F);
  63.  }
  64. }
  65.  
  66.  
  67. void main()
  68. {
  69.   setvga16();
  70.  
  71.   setfillstyle(SOLID_FILL,BLUE);
  72.   bar(0,0,getmaxx(),getmaxy());
  73.  
  74.   res_dis_xgf(0,0,"pics.res",1);
  75.   res_dis_xgf(200,50,"pics.res",2);
  76.   res_dis_xgf(300,100,"pics.res",3);
  77.   res_dis_xgf(200,0,"pics.res",4);
  78.   res_dis_xgf(400,50,"pics.res",5);
  79.   res_dis_xgf(500,100,"pics.res",6);
  80.  
  81.   getch();
  82.   closegraph();
  83. }
  84.